package com.baizhiedu.baizhiappsys.generate;

import com.baizhiedu.baizhiappsys.entity.Pay;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * @author lby
 * 生成支付数据
 */
public class PayDataGenerate {

    private String[] payDevices = {"安卓","IOS"};
    private Integer[] payCourseIds = {1,2,3,4,5,6};
    private String[] payMethods = {"支付宝","微信","Apple Pay","银联支付"};

    public Pay payDataGenerate(Integer userId){
//        获取支付设备
        int index1 = (int) (Math.random() * payDevices.length);
        String payDevice = payDevices[index1];
//        获取课程id
        int index2 = (int) (Math.random() * payCourseIds.length);
        Long payCourseId = (long) (payCourseIds[index2]);
//        获取时间
        Date payTime = new Date();
//        获取支付方式
        int index3 = (int) (Math.random() * payMethods.length);
        String payMethod = payMethods[index3];

//        获取ip地址
        String ip = generateIp();

        return new Pay(userId,payDevice,payCourseId,payTime,payMethod,ip);
    }

    public String generateIp(){
        // ip范围
        int[][] range = { { 607649792, 608174079 }, // 36.56.0.0-36.63.255.255
                { 1038614528, 1039007743 }, // 61.232.0.0-61.237.255.255
                { 1783627776, 1784676351 }, // 106.80.0.0-106.95.255.255
                { 2035023872, 2035154943 }, // 121.76.0.0-121.77.255.255
                { 2078801920, 2079064063 }, // 123.232.0.0-123.235.255.255
                { -1950089216, -1948778497 }, // 139.196.0.0-139.215.255.255
                { -1425539072, -1425014785 }, // 171.8.0.0-171.15.255.255
                { -1236271104, -1235419137 }, // 182.80.0.0-182.92.255.255
                { -770113536, -768606209 }, // 210.25.0.0-210.47.255.255
                { -569376768, -564133889 }, // 222.16.0.0-222.95.255.255
        };

        Random rdint = new Random();
        int index = rdint.nextInt(10);
        String ip = num2ip(range[index][0] + new Random().nextInt(range[index][1] - range[index][0]));
        return ip;
    }

    /*
	 * 将十进制转换成IP地址
	 */
    public static String num2ip(int ip) {
        int[] b = new int[4];
        String x = "";
        b[0] = (int) ((ip >> 24) & 0xff);
        b[1] = (int) ((ip >> 16) & 0xff);
        b[2] = (int) ((ip >> 8) & 0xff);
        b[3] = (int) (ip & 0xff);
        x = Integer.toString(b[0]) + "." + Integer.toString(b[1]) + "." + Integer.toString(b[2]) + "." + Integer.toString(b[3]);

        return x;
    }

}
